home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Games: Greatest Hits 1996
/
Amiga Games: Greatest Hits 1996.iso
/
userbox
/
publicdomain
/
engclock_v7.0
/
engclock7_source
/
getdate.c
< prev
next >
Wrap
C/C++ Source or Header
|
1996-01-23
|
14KB
|
496 lines
/* Checked printf/Printf FREE! */
/*
* Source machine generated by GadToolsBox V2.0
* which is (c) Copyright 1991-1993 Jaba Development
*
* GUI Designed by : -- Unnamed --
*/
#include <exec/types.h>
#include <intuition/intuition.h>
#include <intuition/classes.h>
#include <intuition/classusr.h>
#include <intuition/imageclass.h>
#include <intuition/gadgetclass.h>
#include <libraries/gadtools.h>
#include <graphics/displayinfo.h>
#include <graphics/gfxbase.h>
//#include <proto/exec.h>
//#include <proto/intuition.h>
//#include <proto/gadtools.h>
//#include <proto/graphics.h>
//#include <proto/utility.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <exec/memory.h>
#include <dos/dos.h>
#include <dos/dostags.h>
#include <clib/dos_protos.h>
#include <clib/exec_protos.h>
#include <clib/utility_protos.h>
#include <clib/intuition_protos.h>
#include <clib/gadtools_protos.h>
#include <clib/graphics_protos.h>
extern struct IntuitionBase *IntuitionBase;
extern struct GfxBase *GfxBase;
extern struct Library *UtilityBase;
extern struct Library *GadToolsBase;
extern struct Library *DiskfontBase;
extern struct Library *AslBase;
extern struct Library *IFFParseBase;
extern struct Library *DOSBase;
BOOL handlenewgadgets(ULONG code, ULONG iaddress);
void getdate(void);
void checkcheck(void);
char *dodate(void);
char *findday(int preset2);
void adaptlang(void);
#include "getdate.h"
#define ENGLISH 1
#define FRENCH 2
#define SPANISH 3
extern char *months_data[13];
extern char *months_data_french[13];
extern char *months_data_spanish[13];
extern char *days_data[7];
extern char *days_data_french[7];
extern char *days_data_spanish[7];
extern int language;
char datey[200];
struct ClockData *dte, ndte;
struct Event {
BOOL used;
int type; /* Type of event */
int hours; /* Time of event */
int minutes;
int timecode;
char message[256];
int day;
int month;
int year;
BOOL enabledate;
int freq;
};
extern struct {
/* Prefs structure used for preferences file format */
char header[10]; /* I.D. Header */
int vers; /* Version of preferences file */
int x; /* X dimension of window when saved */
int y; /* Y dimension of window when saved */
int width; /* Width of window when saved */
int height; /* Height of window when saved */
int planguage; /* Language selected (menu) when saved, low pri */
int just; /* Justification of text, 0=Left, 1=Centre, 2=Right */
short date; /* Display date?, 0 = No, 1=Yes */
short wtf; /* Window to front ? */
int time_col[8];
int date_col[8];
short autoadjust; /* Use automatic adjustment on window ? */
char backdrop[256]; /* Backdrop image */
char pub[139]; /* Default public screen */
char accent[256]; /* Language file for tRanslate */
char tkey[100];
char hkey[100];
struct Event events[11]; /* For the alarm! */
}prefs;
extern struct Screen *pubscreen;
APTR VisualInfo3 = NULL;
struct Window *Project0Wnd3 = NULL;
struct Gadget *Project0GList3 = NULL;
struct Gadget *Project0Gadgets3[10];
UWORD Project0Left3 = 55;
UWORD Project0Top3 = 37;
UWORD Project0Width3 = 456;
UWORD Project0Height3 = 111;
UBYTE *Project0Wdt3 = (UBYTE *)"Date settings";
extern int preset;
struct TextAttr topaz83 = {
( STRPTR )"topaz.font", 8, 0x00, 0x01 };
UBYTE *Freq0Labels[] = {
(UBYTE *)"Daily",
(UBYTE *)"Once",
(UBYTE *)"Weekly",
(UBYTE *)"Monthly",
(UBYTE *)"Annually",
NULL };
UWORD Project0GTypes3[] = {
INTEGER_KIND,
INTEGER_KIND,
INTEGER_KIND,
SLIDER_KIND,
SLIDER_KIND,
SLIDER_KIND,
BUTTON_KIND,
CHECKBOX_KIND,
MX_KIND,
TEXT_KIND
};
struct NewGadget Project0NGad3[] = {
36, 9, 67, 13, (UBYTE *)"Day", NULL, GD_Date_Value, PLACETEXT_RIGHT, NULL, NULL,
33, 31, 67, 13, (UBYTE *)"Month", NULL, GD_Month_Value, PLACETEXT_RIGHT, NULL, NULL,
33, 51, 67, 13, (UBYTE *)"Year", NULL, GD_Year_Value, PLACETEXT_RIGHT, NULL, NULL,
174, 9, 130, 13, NULL, NULL, GD_Date_Slide, 0, NULL, NULL,
174, 31, 130, 13, NULL, NULL, GD_Month_Slide, 0, NULL, NULL,
174, 51, 130, 13, NULL, NULL, GD_Year_Slide, 0, NULL, NULL,
15, 90, 426, 15, (UBYTE *)"Ok", NULL, GD_OK, PLACETEXT_IN, NULL, NULL,
413, 69, 26, 11, (UBYTE *)"Enable date", NULL, GD_Current, PLACETEXT_LEFT, NULL, NULL,
419, 7, 17, 9, NULL, NULL, GD_Freq, PLACETEXT_LEFT, NULL, NULL,
31, 70, 251, 13, NULL, NULL, GD_Date_Text, 0, NULL, NULL
};
ULONG Project0GTags3[] = {
(GTIN_Number), 0, (GTIN_MaxChars), 2, (TAG_DONE),
(GTIN_Number), 0, (GTIN_MaxChars), 2, (TAG_DONE),
(GTIN_Number), 0, (GTIN_MaxChars), 4, (TAG_DONE),
(GTSL_Min), 1, (GTSL_Max), 31, (PGA_Freedom), LORIENT_HORIZ, (GA_RelVerify), TRUE, (TAG_DONE),
(GTSL_Min), 1, (GTSL_Max), 12, (PGA_Freedom), LORIENT_HORIZ, (GA_RelVerify), TRUE, (TAG_DONE),
(GTSL_Min), 1995, (GTSL_Max), 2010, (PGA_Freedom), LORIENT_HORIZ, (GA_RelVerify), TRUE, (TAG_DONE),
(TAG_DONE),
(TAG_DONE),
(GTMX_Labels), (ULONG)&Freq0Labels[ 0 ], (GTMX_Spacing), 3, (TAG_DONE),
(GTTX_Border), TRUE, (GTTX_Justification), GTJ_CENTER, (GTTX_Clipped), TRUE, (TAG_DONE)
};
int SetupScreen3( void )
{
if ( ! ( VisualInfo3 = GetVisualInfo( pubscreen, TAG_DONE )))
return( 2L );
return( 0L );
}
void CloseDownScreen3( void )
{
if ( VisualInfo3 ) {
FreeVisualInfo( VisualInfo3 );
VisualInfo3 = NULL;
}
}
int OpenProject0Window3( void )
{
struct NewGadget ng;
struct Gadget *g;
UWORD lc, tc;
UWORD offx = pubscreen->WBorLeft, offy = pubscreen->WBorTop + pubscreen->RastPort.TxHeight + 1;
if ( ! ( g = CreateContext( &Project0GList3 )))
return( 1L );
for( lc = 0, tc = 0; lc < Project0_CNT; lc++ ) {
CopyMem((char * )&Project0NGad3[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
ng.ng_VisualInfo = VisualInfo3;
ng.ng_TextAttr = &topaz83;
ng.ng_LeftEdge += offx;
ng.ng_TopEdge += offy;
Project0Gadgets3[ lc ] = g = CreateGadgetA((ULONG)Project0GTypes3[ lc ], g, &ng, ( struct TagItem * )&Project0GTags3[ tc ] );
while( Project0GTags3[ tc ] ) tc += 2;
tc++;
if ( NOT g )
return( 2L );
}
if ( ! ( Project0Wnd3 = OpenWindowTags( NULL,
WA_Left, Project0Left3,
WA_Top, Project0Top3,
WA_Width, Project0Width3,
WA_Height, Project0Height3 + offy,
WA_IDCMP, INTEGERIDCMP|SLIDERIDCMP|BUTTONIDCMP|CHECKBOXIDCMP|MXIDCMP|TEXTIDCMP|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW,
WA_Flags, WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_ACTIVATE,
WA_Gadgets, Project0GList3,
WA_Title, Project0Wdt3,
WA_ScreenTitle, "EngClock Prefs",
WA_PubScreen, pubscreen,
TAG_DONE )))
return( 4L );
GT_RefreshWindow( Project0Wnd3, NULL );
return( 0L );
}
void CloseProject0Window3( void )
{
if ( Project0Wnd3 ) {
CloseWindow( Project0Wnd3 );
Project0Wnd3 = NULL;
}
if ( Project0GList3 ) {
FreeGadgets( Project0GList3 );
Project0GList3 = NULL;
}
}
void getdate(void) {
ULONG class, code, iaddress;
struct IntuiMessage *msg;
SetupScreen3();
adaptlang();
OpenProject0Window3();
/* Default gadget settings */
GT_SetGadgetAttrs(Project0Gadgets3[GD_Date_Value],Project0Wnd3,NULL,GTIN_Number,prefs.events[preset].day,TAG_END);
GT_SetGadgetAttrs(Project0Gadgets3[GD_Date_Slide],Project0Wnd3,NULL,GTSL_Level,prefs.events[preset].day,TAG_END);
GT_SetGadgetAttrs(Project0Gadgets3[GD_Month_Value],Project0Wnd3,NULL,GTIN_Number,prefs.events[preset].month,TAG_END);
GT_SetGadgetAttrs(Project0Gadgets3[GD_Month_Slide],Project0Wnd3,NULL,GTSL_Level,prefs.events[preset].month,TAG_END);
GT_SetGadgetAttrs(Project0Gadgets3[GD_Year_Value],Project0Wnd3,NULL,GTIN_Number,prefs.events[preset].year,TAG_END);
GT_SetGadgetAttrs(Project0Gadgets3[GD_Year_Slide],Project0Wnd3,NULL,GTSL_Level,prefs.events[preset].year,TAG_END);
GT_SetGadgetAttrs(Project0Gadgets3[GD_Current],Project0Wnd3,NULL,GTCB_Checked,prefs.events[preset].enabledate,TAG_END);
GT_SetGadgetAttrs(Project0Gadgets3[GD_Freq],Project0Wnd3,NULL,GTMX_Active,prefs.events[preset].freq,TAG_END);
GT_SetGadgetAttrs(Project0Gadgets3[GD_Date_Text],Project0Wnd3,NULL,GTTX_Text,dodate(),TAG_END);
GT_RefreshWindow(Project0Wnd3,NULL);
while(1) {
Wait(1<<Project0Wnd3->UserPort->mp_SigBit);
msg=(struct IntuiMessage *)GT_GetIMsg(Project0Wnd3->UserPort);
class=msg->Class;
code=msg->Code;
iaddress=(ULONG)msg->IAddress;
GT_ReplyIMsg(msg);
switch(class) {
case CLOSEWINDOW:
goto cleanup;
break;
case GADGETUP:
case GADGETDOWN:
case MOUSEMOVE:
if(handlenewgadgets(code, iaddress)) goto cleanup;
break;
default:
break;
}
}
cleanup:
CloseProject0Window3();
CloseDownScreen3();
}
BOOL handlenewgadgets(ULONG code, ULONG iaddress) {
struct Gadget *gad;
struct StringInfo *si;
gad=(struct Gadget *)iaddress;
si=(struct StringInfo *)gad->SpecialInfo;
switch(gad->GadgetID) {
case GD_Date_Value:
if(si->LongInt < 1 || si->LongInt > 31) {
DisplayBeep(NULL);
GT_SetGadgetAttrs(Project0Gadgets3[GD_Date_Value],Project0Wnd3,NULL,GTIN_Number,prefs.events[preset].day,TAG_END);
GT_RefreshWindow(Project0Wnd3,NULL);
break;
}
prefs.events[preset].day=si->LongInt;
GT_SetGadgetAttrs(Project0Gadgets3[GD_Date_Slide],Project0Wnd3,NULL,GTSL_Level,si->LongInt,TAG_END);
GT_RefreshWindow(Project0Wnd3,NULL);
checkcheck();
break;
case GD_Month_Value:
if(si->LongInt < 1 || si->LongInt > 12) {
DisplayBeep(NULL);
GT_SetGadgetAttrs(Project0Gadgets3[GD_Month_Value],Project0Wnd3,NULL,GTIN_Number,prefs.events[preset].month,TAG_END);
GT_RefreshWindow(Project0Wnd3,NULL);
break;
}
prefs.events[preset].month=si->LongInt;
GT_SetGadgetAttrs(Project0Gadgets3[GD_Month_Slide],Project0Wnd3,NULL,GTSL_Level,si->LongInt,TAG_END);
GT_RefreshWindow(Project0Wnd3,NULL);
checkcheck();
break;
case GD_Year_Value:
if(si->LongInt < 1995 || si->LongInt > 2010) {
DisplayBeep(NULL);
GT_SetGadgetAttrs(Project0Gadgets3[GD_Year_Value],Project0Wnd3,NULL,GTIN_Number,prefs.events[preset].year,TAG_END);
GT_RefreshWindow(Project0Wnd3,NULL);
break;
}
prefs.events[preset].year=si->LongInt;
GT_SetGadgetAttrs(Project0Gadgets3[GD_Year_Slide],Project0Wnd3,NULL,GTSL_Level,si->LongInt,TAG_END);
GT_RefreshWindow(Project0Wnd3,NULL);
checkcheck();
break;
case GD_Date_Slide:
prefs.events[preset].day=code;
GT_SetGadgetAttrs(Project0Gadgets3[GD_Date_Value],Project0Wnd3,NULL,GTIN_Number,code,TAG_END);
GT_RefreshWindow(Project0Wnd3,NULL);
checkcheck();
break;
case GD_Month_Slide:
prefs.events[preset].month=code;
GT_SetGadgetAttrs(Project0Gadgets3[GD_Month_Value],Project0Wnd3,NULL,GTIN_Number,code,TAG_END);
GT_RefreshWindow(Project0Wnd3,NULL);
checkcheck();
break;
case GD_Year_Slide:
prefs.events[preset].year=code;
GT_SetGadgetAttrs(Project0Gadgets3[GD_Year_Value],Project0Wnd3,NULL,GTIN_Number,code,TAG_END);
GT_RefreshWindow(Project0Wnd3,NULL);
checkcheck();
break;
case GD_OK:
return(1);
break;
case GD_Current:
prefs.events[preset].enabledate=code;
break;
case GD_Freq:
prefs.events[preset].freq=code;
break;
/* String = GD_Date_Text */
}
GT_SetGadgetAttrs(Project0Gadgets3[GD_Date_Text],Project0Wnd3,NULL,GTTX_Text,dodate(),TAG_END);
GT_RefreshWindow(Project0Wnd3,NULL);
return(0);
}
void checkcheck(void) {
if(!prefs.events[preset].enabledate) {
GT_SetGadgetAttrs(Project0Gadgets3[GD_Current],Project0Wnd3,NULL,GTCB_Checked,TRUE,TAG_END);
GT_RefreshWindow(Project0Wnd3,NULL);
prefs.events[preset].enabledate=TRUE;
}
}
char *dodate(void) {
char tmp[10];
int offx, offy;
offx=Project0Wnd3->BorderLeft;
offy=Project0Wnd3->BorderTop;
strcpy(datey,findday(preset));
strcat(datey," ");
sprintf(tmp,"%ld",prefs.events[preset].day);
strcat(datey,tmp);
strcat(datey," ");
switch(language) {
case ENGLISH:
strcat(datey,months_data[prefs.events[preset].month]);
break;
case FRENCH:
strcat(datey,months_data_french[prefs.events[preset].month]);
break;
case SPANISH:
strcat(datey,months_data_spanish[prefs.events[preset].month]);
break;
}
strcat(datey,", ");
sprintf(tmp,"%ld",prefs.events[preset].year);
strcat(datey,tmp);
return(datey);
}
char *findday(int preset2) {
ULONG secs;
dte=AllocMem(sizeof(struct ClockData),MEMF_PUBLIC|MEMF_CLEAR);
dte->mday=prefs.events[preset2].day;
dte->month=prefs.events[preset2].month;
dte->year=prefs.events[preset2].year;
dte->sec=0;
dte->min=0;
dte->hour=0;
secs=Date2Amiga(dte);
Amiga2Date(secs,&ndte);
FreeMem(dte,sizeof(struct ClockData));
switch(language) {
case ENGLISH:
return(days_data[ndte.wday]);
break;
case FRENCH:
return(days_data_french[ndte.wday]);
break;
case SPANISH:
return(days_data_spanish[ndte.wday]);
break;
}
}
void adaptlang(void) {
switch(language) {
case ENGLISH:
break;
case FRENCH:
Freq0Labels[0]="Journalier";
Freq0Labels[1]="Une seule fois";
Freq0Labels[2]="De la semaine";
Freq0Labels[3]="Mensuel";
Freq0Labels[4]="Annuellement";
Project0NGad3[0].ng_GadgetText="Jour";
Project0NGad3[1].ng_GadgetText="Mois";
Project0NGad3[2].ng_GadgetText="Année";
Project0NGad3[6].ng_GadgetText="Emploi";
Project0NGad3[7].ng_GadgetText="Emploi date?";
break;
case SPANISH:
Freq0Labels[0]="Diario";
Freq0Labels[1]="Una vez";
Freq0Labels[2]="Semanalmente";
Freq0Labels[3]="Mensualmente";
Freq0Labels[4]="Anualmente";
Project0NGad3[0].ng_GadgetText="Dia";
Project0NGad3[1].ng_GadgetText="Mes";
Project0NGad3[2].ng_GadgetText="Año";
Project0NGad3[6].ng_GadgetText="Usar";
Project0NGad3[7].ng_GadgetText="Usar fecha ?";
break;
default:
break;
}
}